#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define MY_FILE(number) "log.txt"#number

int main(){
    //使用系统的接口open和close
    //open打开成功会返回一个文件描述码，打开失败会返回-1
    //这里的flags选项就是采用比特位来存储的，所以要使用按位或来添加
    //系统的w是不会自动创建文件的，要添加功能选项,只有2个选项的open创建的文件，权限是乱的
    //这时候就需要第三个参数了，它是控制权限的，但是他会减去洗头的umask
    umask(0);

    //尝试打开多个文件
    int fd0 = open(MY_FILE(1),O_WRONLY | O_CREAT | O_APPEND,0666);
    int fd1 = open(MY_FILE(2),O_WRONLY | O_CREAT | O_APPEND,0666);
    int fd2 = open(MY_FILE(3),O_WRONLY | O_CREAT | O_APPEND,0666);
    int fd3 = open(MY_FILE(4),O_WRONLY | O_CREAT | O_APPEND,0666);
    int fd4 = open(MY_FILE(5),O_WRONLY | O_CREAT | O_APPEND,0666);

    printf("fd:%d\n",fd0);
    printf("fd:%d\n",fd1);
    printf("fd:%d\n",fd2);
    printf("fd:%d\n",fd3);
    printf("fd:%d\n",fd4);
    
    close(fd0);
    close(fd1);
    close(fd2);
    close(fd3);
    close(fd4);













    //int fd = open(MY_FILE,O_WRONLY | O_CREAT | O_TRUNC,0666);
   // int fd = open(MY_FILE,O_WRONLY | O_CREAT | O_APPEND,0666);
    // int fd =open(MY_FILE,O_RDONLY);
    //if(fd < 0){
    //  perror("open\n");
    //  return 1;
    //}
    
    //开始写入数据write
   // char outbuffer[64];
   // int cnt =5;
   // while(cnt--){
   //     //sprintf(outbuffer,"%s :%d\n","hello,linux",cnt);
   //     sprintf(outbuffer,"%s :%d\n","hello",cnt);//这里写入aaaa发现里面还有上一次文件的残留数据，是因为w不会默认清除数据
   //     write(fd,outbuffer,strlen(outbuffer));//向文件写入string的时候，要不要+\0
   //     //不用，你以0作为字符串的结尾，是c语言的规定，和我文件没有关系
   // }
     
   //开始把文件的数据读出来
  // char buffer[1024];
  // ssize_t ret =  read(fd,buffer,sizeof(buffer)-1);
  // if(ret > 0){
  //    buffer[ret] = 0;//c语言的规定字符串最后一个字符是0
  // }
  // printf("%s\n",buffer);

    //close(fd);

     
































  //复习c
  //r(只读) w(只写，如果文件不存在会创建，并且会覆盖源文件的东西)
  //r+(读写，如果不存在会报错) w+(读写，不存在会创建)
  //a(追加内容，不会覆盖原来的数据) a+(追加)
  //FILE* pf = fopen(MY_FILE,"w");
  ////FILE* pf = fopen(MY_FILE,"r");
  //if(pf == NULL){
  //  perror("打开失败\n");
  //  return 1;
  //}
  
  //开始读取文件里面的内容
  //char buffer[64];
  //while(fgets(buffer,sizeof(buffer) - 1,pf) != NULL){
  //    buffer[strlen(buffer)-1] =0;
  //    puts(buffer);
  //}





  //开始往文件内写内容
  //int cnt = 5;
  //while(cnt){
  //  fprintf(pf,"%s : %d\n","hello,linux",cnt--);//fprintf是往文件指针指向的文件中格式化打印内容
  //}



  //关闭文件 
  //fclose(pf);


  return 0;
}
